39 #include "stm32f4xx_hal.h"
70 static DMA_HandleTypeDef hdma_tx;
71 GPIO_InitTypeDef GPIO_InitStruct;
75 USARTx_TX_GPIO_CLK_ENABLE();
76 USARTx_RX_GPIO_CLK_ENABLE();
84 GPIO_InitStruct.Pin = USARTx_TX_PIN;
85 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
86 GPIO_InitStruct.Pull = GPIO_PULLUP;
87 GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
88 GPIO_InitStruct.Alternate = USARTx_TX_AF;
90 HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);
93 GPIO_InitStruct.Pin = USARTx_RX_PIN;
94 GPIO_InitStruct.Alternate = USARTx_RX_AF;
96 HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);
99 HAL_NVIC_SetPriority(USARTx_IRQn, 5, 0);
100 HAL_NVIC_EnableIRQ(USARTx_IRQn);
104 hdma_tx.Instance = USARTx_TX_DMA_STREAM;
106 hdma_tx.Init.Channel = USARTx_TX_DMA_CHANNEL;
107 hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
108 hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE;
109 hdma_tx.Init.MemInc = DMA_MINC_ENABLE;
110 hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
111 hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
112 hdma_tx.Init.Mode = DMA_NORMAL;
113 hdma_tx.Init.Priority = DMA_PRIORITY_LOW;
114 hdma_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
115 hdma_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
116 hdma_tx.Init.MemBurst = DMA_MBURST_INC4;
117 hdma_tx.Init.PeriphBurst = DMA_PBURST_INC4;
119 HAL_DMA_Init(&hdma_tx);
122 __HAL_LINKDMA(huart, hdmatx, hdma_tx);
126 HAL_NVIC_SetPriority(USARTx_DMA_TX_IRQn, 6, 0);
127 HAL_NVIC_EnableIRQ(USARTx_DMA_TX_IRQn);
134 HAL_NVIC_SetPriority(TIMx_IRQn, 6, 0);
137 HAL_NVIC_EnableIRQ(TIMx_IRQn);
151 USARTx_FORCE_RESET();
152 USARTx_RELEASE_RESET();
156 HAL_GPIO_DeInit(USARTx_TX_GPIO_PORT, USARTx_TX_PIN);
158 HAL_GPIO_DeInit(USARTx_RX_GPIO_PORT, USARTx_RX_PIN);
161 HAL_NVIC_DisableIRQ(USARTx_IRQn);
165 TIMx_RELEASE_RESET();